package mx.ipn.negocios.empleado;

import mx.ipn.negocios.CodigosDeError;
import mx.ipn.negocios.ConexionConPersistencia;
import mx.ipn.to.*;

public class TurnoBO {
	public static TurnoTO agregarTurno(TurnoTO turnoTO) {

		boolean res;
		TurnoTO turno2TO = null;
		turno2TO = (TurnoTO) ConexionConPersistencia.invocaServicio(
				"encontrarTurnoPorNombre", turnoTO.getNombre(), TurnoTO.class);
		if (turno2TO == null) {
			res = (Boolean) ConexionConPersistencia.invocaServicio(
					"agregarTurno", turnoTO, Boolean.class);
			if (res == false) {
				turnoTO.setTipoError(TransferObject.ERROR);
				turnoTO.setError(CodigosDeError.error.get(31003));
			} else {

				turnoTO.setError(CodigosDeError.error.get(31007));
			}
		} else {
			turnoTO.setTipoError(TransferObject.ERROR);
			turnoTO.setError(CodigosDeError.error.get(31002));
		}
		return turnoTO;
	}

	public static TurnoTO[] buscarTurnos() {
		TurnoTO[] arrTurnoTO = null;
		arrTurnoTO = (TurnoTO[]) ConexionConPersistencia.invocaServicio(
				"buscarTurnos", TurnoTO[].class);
		if (arrTurnoTO != null) {
			if (arrTurnoTO[0].getTipoError() == TransferObject.INFO) {
				arrTurnoTO = null;
				arrTurnoTO = new TurnoTO[1];
				TurnoTO auxTO = new TurnoTO();
				auxTO.setTipoError(TransferObject.INFO);
				auxTO.setError(CodigosDeError.error.get(31008));
				arrTurnoTO[0] = auxTO;
			}
		} else {
			arrTurnoTO = null;
			arrTurnoTO = new TurnoTO[1];
			TurnoTO auxTO = new TurnoTO();
			auxTO.setTipoError(TransferObject.INFO);
			auxTO.setError(CodigosDeError.error.get(31010));
			arrTurnoTO[0] = auxTO;
		}

		return arrTurnoTO;
	}

	public static TurnoTO[] encontrarTurnoPorNombre(String nombre) {
		TurnoTO[] arrTurnoTO = new TurnoTO[1];
		TurnoTO resTO = null;

		resTO = (TurnoTO) ConexionConPersistencia.invocaServicio(
				"encontrarTurnoPorNombre", nombre, TurnoTO.class);
		if (resTO != null) {
			arrTurnoTO[0] = resTO;
		} else {
			resTO = new TurnoTO();
			resTO.setTipoError(TransferObject.INFO);
			resTO.setError(CodigosDeError.error.get(31008));
			arrTurnoTO[0] = resTO;
		}
		return arrTurnoTO;
	}

	public static TurnoTO[] encontrarTurnoPorRangoInicio(TurnoTO[] rangoTO) {
		TurnoTO[] arrTurnoTO = null;
		arrTurnoTO = (TurnoTO[]) ConexionConPersistencia.invocaServicio(
				"encontrarTurnoPorRangoInicio", rangoTO, TurnoTO[].class);
		if (arrTurnoTO != null) {
			if (arrTurnoTO[0].getTipoError() == TransferObject.INFO) {
				arrTurnoTO = null;
				arrTurnoTO = new TurnoTO[1];
				TurnoTO auxTO = new TurnoTO();
				auxTO.setTipoError(TransferObject.INFO);
				auxTO.setError(CodigosDeError.error.get(31008));
				arrTurnoTO[0] = auxTO;
			}
		} else {
			arrTurnoTO = null;
			arrTurnoTO = new TurnoTO[1];
			TurnoTO auxTO = new TurnoTO();
			auxTO.setTipoError(TransferObject.INFO);
			auxTO.setError(CodigosDeError.error.get(31010));
			arrTurnoTO[0] = auxTO;
		}

		return arrTurnoTO;
	}

	public static TurnoTO[] encontrarTurnoPorRangoDia(TurnoTO[] rangoTO) {
		TurnoTO[] arrTurnoTO;
		arrTurnoTO = (TurnoTO[]) ConexionConPersistencia.invocaServicio(
				"encontrarTurnoPorRangoDia", rangoTO, TurnoTO[].class);

		if (arrTurnoTO != null) {
			if (arrTurnoTO[0].getTipoError() == TransferObject.INFO) {
				arrTurnoTO = null;
				arrTurnoTO = new TurnoTO[1];
				TurnoTO auxTO = new TurnoTO();
				auxTO.setTipoError(TransferObject.INFO);
				auxTO.setError(CodigosDeError.error.get(31008));
				arrTurnoTO[0] = auxTO;
			}
		} else {
			arrTurnoTO = null;
			arrTurnoTO = new TurnoTO[1];
			TurnoTO auxTO = new TurnoTO();
			auxTO.setTipoError(TransferObject.INFO);
			auxTO.setError(CodigosDeError.error.get(31010));
			arrTurnoTO[0] = auxTO;
		}
		return arrTurnoTO;
	}

	public static TurnoTO[] encontrarTurnoPorRangoDuracion(TurnoTO[] rangoTO) {
		TurnoTO[] arrTurnoTO = null;
		arrTurnoTO = (TurnoTO[]) ConexionConPersistencia.invocaServicio(
				"encontrarTurnoPorRangoDuracion", rangoTO, TurnoTO[].class);
		if (arrTurnoTO != null) {
			if (arrTurnoTO[0].getTipoError() == TransferObject.INFO) {
				arrTurnoTO = null;
				arrTurnoTO = new TurnoTO[1];
				TurnoTO auxTO = new TurnoTO();
				auxTO.setTipoError(TransferObject.INFO);
				auxTO.setError(CodigosDeError.error.get(31008));
				arrTurnoTO[0] = auxTO;
			}
		} else {
			arrTurnoTO = null;
			arrTurnoTO = new TurnoTO[1];
			TurnoTO auxTO = new TurnoTO();
			auxTO.setTipoError(TransferObject.INFO);
			auxTO.setError(CodigosDeError.error.get(31010));
			arrTurnoTO[0] = auxTO;
		}
		return arrTurnoTO;
	}

	public static TurnoTO bajaTurno(int idTurno) {
		short res;
		TurnoTO turnoTO = new TurnoTO();
		res = (Short) ConexionConPersistencia.invocaServicio("bajaTurno",
				idTurno, Short.class);
		if (res != 1) {
			turnoTO.setTipoError(TransferObject.ERROR);
			turnoTO.setError(CodigosDeError.error.get(31010));
		} else {
			turnoTO.setError(CodigosDeError.error.get(31009));
		}
		return turnoTO;
	}

	public static TurnoTO modificarTurno(TurnoTO[] arrTurnoTO) {
		short res = -1;
		TurnoTO turnoTO = null;
		String nombre = new String(arrTurnoTO[1].getNombre());
		turnoTO = (TurnoTO) ConexionConPersistencia.invocaServicio(
				"encontrarTurnoPorNombre", nombre,
				TurnoTO.class);
		if (turnoTO == null) {
			res = (Short) ConexionConPersistencia.invocaServicio(
					"modificarTurno", arrTurnoTO[1], Short.class);

			if (res != 1) {
				turnoTO = new TurnoTO();
				turnoTO.setTipoError(TransferObject.ERROR);
				turnoTO.setError(CodigosDeError.error.get(31006));
			} else {
				turnoTO = new TurnoTO();
				turnoTO.setError(CodigosDeError.error.get(31007));
			}

		} else if (arrTurnoTO[0].getIdTurno() == turnoTO.getIdTurno()) {
			res = (Short) ConexionConPersistencia.invocaServicio(
					"modificarTurno", arrTurnoTO[1], Short.class);

			if (res != 1) {
				turnoTO = new TurnoTO();
				turnoTO.setTipoError(TransferObject.ERROR);
				turnoTO.setError(CodigosDeError.error.get(31006));
			} else {
				turnoTO = new TurnoTO();
				turnoTO.setError(CodigosDeError.error.get(31007));
			}

		} else if (arrTurnoTO[0].getIdTurno() != turnoTO.getIdTurno()) {

			turnoTO = new TurnoTO();
			turnoTO.setTipoError(TransferObject.INFO);
			turnoTO.setError(CodigosDeError.error.get(31005));
		}
		return turnoTO;
	}
}
